import { GET_LIST_DATA,RESET_PAGE } from './actionTypes.js'
import api from "../../../http/api";


const getData = (obj) => {
    return {
        type: GET_LIST_DATA,
        obj: obj
    }
}

// 重置页码
export const resetPage = () => {
    return {
        type: RESET_PAGE,
        obj: {
            page: 0
        }
    }
}

// 获取筛选参数
const getFilterData = (state) => {
    let _tabs = JSON.parse(JSON.stringify(state.handleTabReducer.tabs));
    let result = {};
    for(let key in _tabs) {
        let item = _tabs[key];
        if(item.obj.code) {
            result[key] = item.obj.code;
        } else {
            result[key] = null;
        }
    }
    return result;
}

const checkIsNull = (obj) => {
    console.log(obj);
    let temp = false;
    for(let key in obj) {
        if(obj[key]) {
            temp = true
            break;
        }
    }
    return temp;
}


/**
 * 获取筛选到的数据
 * @params isToFirst 是否是展示第一页
 * @returns {Function}
 */
export const getDataByFilter = (isToFirst) => (dispatch, getState) => {
    let _filterData = getFilterData(getState())

    if(!checkIsNull(_filterData)) {
        // 默认显示全部的
        api.getContentList({
            page: getState().getContentListReducer.page
        }).then((res) => {
            dispatch(getData({
                data: res.data, // 存入数据
                pages: res.pages, // 设置总页数
                isToFirst: isToFirst // 是否需要去加载第一页
            }))
        })
    } else {
        // 通过页码 + 筛选条件获取相应的数据
        if(isToFirst) {
            // 页置为0
            dispatch(resetPage())
        }
        api.getFilterContentList({
            page: getState().getContentListReducer.page,
            filterData: _filterData
        }).then((res) => {
            // 触发操作
            dispatch(getData({
                data: res.data, // 存入数据
                pages: res.pages, // 设置总页数
                isToFirst: isToFirst // 是否需要去加载第一页
            }))
        })
    }

}
